Two of the basic types of computer networking environments are a client-server environment and a peer-to-peer environment. Both types of environments may be used by computer users in the playing of a computer game. Each type of environment offers certain advantages over the other.
As shown in FIG. 2, a client-server environment involves the connection of one or more client computers to a server via some type of network. In this environment, a client may wish to connect to the server to begin a gaming session or other activity. The server is at a known location that typically will not change over time. When the client connects to the server, the server will perform some type of validation or authentication to ensure that the client is requesting access to an appropriate game or activity and that the client has the necessary software or hardware to access the game or activity. In the client-server environment, the server also determines if the game or activity has room for the additional client. In the client-server environment, the clients connected to the server will not have full knowledge of the presence and activities of other clients connected to the server. Therefore, in this environment, it is not necessary for the clients to have synchronized information regarding other clients.
The client-server environment is not always desirable to computer users. For example, in the client-server environment, the various clients are not always able to play a game against one another. In contrast, a peer-to-peer environment allows clients, or peers, to play a game or engage is some other activity where each peer has full knowledge of the presence and activities of all other peers connected in the session. Another drawback existing with the client-server environment centers on the need for the server to exist within the session. Any server downtime therefore serves as a single point of failure that could terminate an entire session. The session would be unavailable until the server was back, up and running properly. A peer-to-peer session is illustrated schematically in FIG. 3 and is discussed in more detail below. While such an environment does present advantages, it has heretofore presented certain drawbacks as well. For example, in the client-server environment, the server is almost always at the same location or address, and the particular clients connected to the server do not need to synchronize information. Moreover, the server is unlikely to stop operation, so the gaming session may continue without interruption. In contrast, in the peer-to-peer environment, the first peer to initiate a session is called the “host.” The “host” will typically change from session to session and may change during a session if the “host” stops operating within the session. Peers may join and drop from sessions as the session continues, including the host dropping. In a peer-to-peer session, however, it is critical for each peer connected and participating within the session to have the same information regarding all of the other peers in the session. The host peer will typically coordinate the synchronization of this information. Therefore, when a host drops from the session, a new host must take over the responsibilities or the integrity of the game will be lost. This process is commonly called “host migration.”
In prior art peer-to-peer environments, the process of synchronization of peer information and host migration has suffered from reliability problems. Many of these problems stem from the fact that in a networked environment, the order of messages and information sent between connected peers cannot be reliably determined. Thus, in these prior art peer-to peer environments, attempts to maintain the integrity of the session have had only limited success, resulting in sessions being lost prematurely, or sessions fragmenting into two or more parts.
Accordingly, there is a need for an effective system and method for a peer-to-peer session that ensures all peers have a consistent view of all other peers. A system and method for a peer-to-peer session that ensures all peers are synchronized after a host peer has left the session is also needed.